Exercice 2 1) is_empty([]). push(X,L,[X|L]). pop([X|L],L,X). 2 a) les mots en question sont ceux contenant autant de 'a' que de 'b', et dont tous les prefixes contienennt au moins autant de 'a' que de 'b' 2 b) parse(W):-is_empty(X), parse_aux(W,X,start). parse_aux([a|L],X,start):-push(a,X,X1), parse_aux(L,X1,start). parse_aux([b|L],X,start):-pop(X,Y,_), parse_aux(L,Y,end). parse_aux([b|L],X,end):-pop(X,Y,_), parse_aux(L,Y,end). parse_aux([],[],_). 3) miroir(P1,P2):-is_empty(Paux),m_aux(P1,Paux,P2). m_aux([],P,P). m_aux(P1,P2,P3):-pop(P1,P,X),push(X,P2,Q),m_aux(P,Q,P3). Exercice 3 3) aux(X,Y,Z):-p(X),p(Y),p(Z), X\==Y,X\==Z,Y\==Z,!. p3(X):-aux(X,_,_). p3(X):-aux(_,X,_). p3(X):-aux(_,_,X).